// src/api/media.js
import request from '@/utils/request'

/**
 * 媒体相关API
 */
export default {
    /**
     * 获取媒体列表
     * @param {Object} params - 查询参数
     * @returns {Promise}
     */
    getMedias(params) {
        return request({
            url: '/medias',
            method: 'get',
            params
        })
    },

    /**
     * 获取媒体详情
     * @param {Number|String} id - 媒体ID
     * @returns {Promise}
     */
    getMedia(id) {
        return request({
            url: `/medias/${id}`,
            method: 'get'
        })
    },

    /**
     * 创建媒体
     * @param {Object} data - 媒体数据
     * @returns {Promise}
     */
    createMedia(data) {
        return request({
            url: '/medias',
            method: 'post',
            data
        })
    },

    /**
     * 更新媒体
     * @param {Number|String} id - 媒体ID
     * @param {Object} data - 媒体数据
     * @returns {Promise}
     */
    updateMedia(id, data) {
        return request({
            url: `/medias/${id}`,
            method: 'put',
            data
        })
    },

    /**
     * 删除媒体
     * @param {Number|String} id - 媒体ID
     * @returns {Promise}
     */
    deleteMedia(id) {
        return request({
            url: `/medias/${id}`,
            method: 'delete'
        })
    },

    /**
     * 搜索媒体
     * @param {Object} params - 搜索参数
     * @returns {Promise}
     */
    searchMedias(params) {
        return request({
            url: '/medias/search',
            method: 'get',
            params
        })
    },

    /**
     * 获取媒体关联的单词
     * @param {Number|String} mediaId - 媒体ID
     * @param {Object} params - 查询参数
     * @returns {Promise}
     */
    getMediaWords(mediaId, params) {
        return request({
            url: `/medias/${mediaId}/words`,
            method: 'get',
            params
        })
    },

    /**
     * 添加单词到媒体
     * @param {Number|String} mediaId - 媒体ID
     * @param {Object} data - 单词数据
     * @returns {Promise}
     */
    addWordToMedia(mediaId, data) {
        return request({
            url: `/medias/${mediaId}/words`,
            method: 'post',
            data
        })
    },

    /**
     * 从媒体中移除单词
     * @param {Number|String} mediaId - 媒体ID
     * @param {Number|String} wordId - 单词ID
     * @returns {Promise}
     */
    removeWordFromMedia(mediaId, wordId) {
        return request({
            url: `/medias/${mediaId}/words/${wordId}`,
            method: 'delete'
        })
    }
}
